Шаг 28 - Поддержка сокетов MFC Получение данных из сокета.

Поле установки связи нам могут вернуть некоторые данные. Все зависит конечно от протокола и сервера. Мы попробуем на основе почтового протокола SMTP который описан в RFC 821. После установки соединения с сокетом на сервере сокет возвращает некоторую информацию о соединении. Вот ее мы и хотим посмотреть. На диалоговое окно я поместил элемент управления ListBox

28_1.gif (2230 b)

Для получения сообщения от сокета есть функция

virtual int Receive( void* lpBuf, int nBufLen, int nFlags = 0 );

Если без ошибок, то функция вернет количество принятых байтов иначе вернет 0. Давайте ее применим.

void CTestConnectDlg::OnConnect() 
{
WSADATA wsaData; 
if (!AfxSocketInit(&wsaData))
{
	AfxMessageBox("Error Unit");
	return;
}

CSocket sa;
sa.Create();
if (sa.Connect("pop.yandex.ru",25))
{
	char buffer[255];
	sa.Receive(buffer,sizeof(buffer)); 
	m_Reserve.AddString(buffer); 

} 
else AfxMessageBox("Error Connect");
sa.Close(); 	
}

Связываемся и смотрим.

28_2.gif (2756 b)

Вот он нам и рассказал о себе.

Hosted by uCoz